SequenceInputStream
জাভার java.io
প্যাকেজের একটি ক্লাস যা একাধিক ইনপুট স্ট্রিমের মধ্যে ডেটা একত্রে পড়ে। এটি একাধিক ইনপুট স্ট্রিমকে একটি ধারাবাহিক স্ট্রিম হিসেবে ব্যবহার করতে সহায়ক, যেখানে এক ইনপুট স্ট্রিমের ডেটা পড়ে শেষ হওয়ার পরে পরবর্তী ইনপুট স্ট্রিম থেকে ডেটা পড়া হয়। এটি সাধারণত যখন একাধিক ফাইল বা স্ট্রিমের ডেটা একত্রে পড়তে হয়, তখন ব্যবহৃত হয়।
SequenceInputStream
ক্লাসের বৈশিষ্ট্যread()
মেথড ব্যবহার করা হয়, এবং স্ট্রিম শেষ হলে এটি পরবর্তী ইনপুট স্ট্রিমে চলে যায়।EOFException
ফেলে।SequenceInputStream
এর নির্মাণকারকSequenceInputStream(InputStream s1, InputStream s2)
SequenceInputStream(Enumeration<? extends InputStream> e)
SequenceInputStream
ব্যবহার করার উদাহরণধরি, আমাদের দুটি ফাইল file1.txt
এবং file2.txt
আছে, এবং আমরা এগুলোর কনটেন্ট একসাথে পড়তে চাই।
import java.io.FileInputStream;
import java.io.SequenceInputStream;
import java.io.IOException;
public class SequenceInputStreamExample {
public static void main(String[] args) {
try {
// প্রথম ইনপুট ফাইল স্ট্রিম তৈরি
FileInputStream file1 = new FileInputStream("file1.txt");
// দ্বিতীয় ইনপুট ফাইল স্ট্রিম তৈরি
FileInputStream file2 = new FileInputStream("file2.txt");
// SequenceInputStream দ্বারা দুটি স্ট্রিম একত্রিত করা
SequenceInputStream sequenceInputStream = new SequenceInputStream(file1, file2);
int byteData;
// একে একে ডেটা পড়া
while ((byteData = sequenceInputStream.read()) != -1) {
System.out.print((char) byteData); // ডেটা প্রদর্শন করা
}
// স্ট্রিম বন্ধ করা
file1.close();
file2.close();
sequenceInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
FileInputStream
ক্লাস ব্যবহার করে দুটি ফাইলের ইনপুট স্ট্রিম তৈরি করা হয়েছে।SequenceInputStream
ব্যবহার করে দুটি ইনপুট স্ট্রিম একত্রিত করা হয়েছে, এবং তারপর read()
মেথড ব্যবহার করে ডেটা পড়া হয়েছে।char
হিসেবে ডেটা কনভার্ট করে কনসোলে প্রদর্শন করা হয়েছে।এখন, যদি file1.txt
এবং file2.txt
ফাইলের কন্টেন্ট এমন থাকে:
file1.txt
:
Hello,
file2.txt
:
World!
আউটপুট হবে:
Hello,
World!
এখানে আমরা Enumeration ব্যবহার করে একাধিক ইনপুট স্ট্রিমকে একত্রিত করব:
import java.io.FileInputStream;
import java.io.SequenceInputStream;
import java.io.IOException;
import java.util.Vector;
public class SequenceInputStreamEnumerationExample {
public static void main(String[] args) {
try {
// একাধিক ইনপুট স্ট্রিম তৈরি
FileInputStream file1 = new FileInputStream("file1.txt");
FileInputStream file2 = new FileInputStream("file2.txt");
FileInputStream file3 = new FileInputStream("file3.txt");
// ইনপুট স্ট্রিমগুলো একটি ভেক্টরে রাখা
Vector<FileInputStream> fileStreams = new Vector<>();
fileStreams.add(file1);
fileStreams.add(file2);
fileStreams.add(file3);
// Enumeration তৈরি
Enumeration<FileInputStream> e = fileStreams.elements();
// SequenceInputStream দিয়ে একাধিক স্ট্রিম একত্রিত করা
SequenceInputStream sequenceInputStream = new SequenceInputStream(e);
int byteData;
// একে একে ডেটা পড়া
while ((byteData = sequenceInputStream.read()) != -1) {
System.out.print((char) byteData); // ডেটা প্রদর্শন করা
}
// স্ট্রিম বন্ধ করা
sequenceInputStream.close();
file1.close();
file2.close();
file3.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
Vector
ক্লাস ব্যবহার করা হয়েছে FileInputStream
গুলিকে একটি Enumeration এ পরিণত করতে।SequenceInputStream
ব্যবহার করে এই সব স্ট্রিমকে একত্রিত করা হয়েছে এবং একে একে ডেটা পড়া হয়েছে।SequenceInputStream
এর সুবিধা:Enumeration
ব্যবহার করে অনেকগুলো ইনপুট স্ট্রিম একত্রিত করা যায়।SequenceInputStream
স্ট্রিমগুলোতে কেবল sequential access প্রদান করে, মানে আপনি একটি স্ট্রিম থেকে অন্য স্ট্রিমে যাত্রা করবেন, আপনি র্যান্ডম অ্যাক্সেস করতে পারবেন না।SequenceInputStream
একটি খুবই শক্তিশালী ক্লাস যা একাধিক ইনপুট স্ট্রিমকে একত্রিত করতে সাহায্য করে। এটি ফাইলের মধ্যে ধারাবাহিকভাবে ডেটা পড়তে বা প্রসেস করতে অত্যন্ত কার্যকরী। এর সাথে Enumeration
ব্যবহার করে একাধিক স্ট্রিম সহজেই একত্রিত করা যায়। তবে, এটি শুধুমাত্র sequential access প্রদান করে, যার কারণে কিছু সীমাবদ্ধতা রয়েছে।
SequenceInputStream
হল Java I/O ক্লাস যা একাধিক ইনপুট স্ট্রিমকে একত্রিত করে একটি স্ট্রিমে ডেটা পড়তে ব্যবহৃত হয়। এটি java.io প্যাকেজের অংশ, এবং এটি বিভিন্ন ইনপুট স্ট্রিমের একটি সিকোয়েন্স (sequence) তৈরি করে, যার মাধ্যমে আপনি একাধিক ইনপুট ফাইল বা সোর্স থেকে ডেটা পড়তে পারেন।
SequenceInputStream
সাধারণত দুটি বা ততোধিক ইনপুট স্ট্রিমের ডেটা একত্রে পড়ার জন্য ব্যবহৃত হয়, যাতে তাদের একত্রিত আউটপুট পাওয়া যায়। এটি একটি কমপোজিট স্ট্রিম হিসাবে কাজ করে এবং তারপরে সেগুলিকে একটি স্ট্রিমের মতো পরিচালনা করতে দেয়।
মেথড | বর্ণনা |
---|---|
int read() | একটি বাইট পড়ে এবং রিটার্ন করে। |
int read(byte[] b) | বাফার থেকে একাধিক বাইট পড়ে এবং রিটার্ন করে। |
long skip(long n) | স্ট্রিম থেকে নির্দিষ্ট পরিমাণ বাইট উপেক্ষা (skip) করে। |
void close() | স্ট্রিমটি বন্ধ করে। |
boolean available() | পড়ার জন্য কতটুকু ডেটা এখনও বাকি আছে তা চেক করে। |
ধরা যাক, আমাদের দুটি ইনপুট ফাইল রয়েছে এবং আমরা তাদের ডেটা একত্রে পড়তে চাই। আমরা SequenceInputStream
ব্যবহার করে দুটি ফাইলের ডেটাকে একত্রিত করতে পারি।
কোড উদাহরণ:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
public class SequenceInputStreamExample {
public static void main(String[] args) {
// দুটি ইনপুট স্ট্রিম তৈরি করা
try (FileInputStream fis1 = new FileInputStream("file1.txt");
FileInputStream fis2 = new FileInputStream("file2.txt");
SequenceInputStream sis = new SequenceInputStream(fis1, fis2)) {
int byteData;
while ((byteData = sis.read()) != -1) { // দুটি স্ট্রিম থেকে একে একে ডেটা পড়া
System.out.print((char) byteData); // পড়া ডেটা কনসোলে প্রিন্ট
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
উদাহরণ ফাইল 1 (file1.txt
):
This is the content of file 1.
উদাহরণ ফাইল 2 (file2.txt
):
This is the content of file 2.
আউটপুট:
This is the content of file 1.This is the content of file 2.
Vector
ব্যবহার করে একাধিক স্ট্রিম যোগ করা যেতে পারে)।আপনি Java Tuples ব্যবহার করে SequenceInputStream
এর আউটপুট সংরক্ষণ করতে পারেন। উদাহরণস্বরূপ, আপনি SequenceInputStream
থেকে পড়া ডেটা এবং স্ট্রিমের অবস্থান Tuple এ সংরক্ষণ করতে পারেন।
import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import org.apache.commons.lang3.tuple.Pair;
public class SequenceInputStreamWithTuple {
public static void main(String[] args) {
try (FileInputStream fis1 = new FileInputStream("file1.txt");
FileInputStream fis2 = new FileInputStream("file2.txt");
SequenceInputStream sis = new SequenceInputStream(fis1, fis2)) {
StringBuilder fileContent = new StringBuilder();
int byteData;
while ((byteData = sis.read()) != -1) {
fileContent.append((char) byteData);
}
// Tuple ব্যবহার করে ফাইলের কন্টেন্ট এবং আকার সংরক্ষণ
Pair<String, Integer> fileInfo = new Pair<>(fileContent.toString(), fileContent.length());
System.out.println("File Content: " + fileInfo.getLeft());
System.out.println("File Size: " + fileInfo.getRight() + " characters");
} catch (IOException e) {
e.printStackTrace();
}
}
}
আউটপুট:
File Content: This is the content of file 1.This is the content of file 2.
File Size: 70 characters
SequenceInputStream
Java I/O সিস্টেমে একাধিক ইনপুট স্ট্রিমকে একত্রিত করে একটি স্ট্রিমে ডেটা পড়তে ব্যবহৃত হয়।SequenceInputStream
থেকে পড়া ডেটা এবং অন্যান্য প্রোপার্টি (যেমন সাইজ, নাম) একত্রে সংরক্ষণ করতে পারেন।SequenceInputStream একাধিক ইনপুট স্ট্রিমের ডেটা একত্রিত করে পড়ার জন্য একটি শক্তিশালী টুল এবং Java Tuples ব্যবহার করে আপনি এই ডেটাকে আরও কার্যকরভাবে সংরক্ষণ করতে পারেন।
SequenceInputStream
একটি Java I/O ক্লাস যা multiple InputStream
একত্রিত (merge) করে একটি একক স্ট্রিমে রূপান্তরিত করে। এটি বিভিন্ন InputStream
থেকে ডেটা পড়ে এবং সেই ডেটা একটি ধারাবাহিক (sequential) স্ট্রিমে পাঠায়। এটি সাধারণত একাধিক ফাইল বা উৎস থেকে ডেটা একত্রে পড়ার জন্য ব্যবহৃত হয়।
SequenceInputStream
দ্বারা বিভিন্ন ইনপুট স্ট্রিমের ডেটা একত্রিত করে একটি একক স্ট্রিমে পাঠানো যায়, যা ডেটার মার্জিং (merging) প্রক্রিয়া। এই ক্লাসটি দুটি বা তার বেশি InputStream
কে একত্রে স্ট্রিমে রূপান্তরিত করে, যাতে একের পর এক তাদের ডেটা পড়া যায়।
InputStream
কে একত্রে একক স্ট্রিমে মার্জ করে।মেথড | বর্ণনা |
---|---|
read() | স্ট্রিম থেকে পরবর্তী বাইট পড়ে। |
read(byte[] b) | একটি বাফারে একাধিক বাইট পড়ে। |
close() | স্ট্রিমটি বন্ধ করে। |
mark(int readlimit) | স্ট্রিমের একটি পজিশন মার্ক করে, যাতে পরে তা থেকে ডেটা পড়া যায়। |
reset() | মার্ক করা অবস্থান থেকে পুনরায় পড়া শুরু করে। |
এই উদাহরণে, দুটি ফাইলের ডেটা একত্রিত করা হচ্ছে। SequenceInputStream
ব্যবহার করে দুটি FileInputStream
থেকে ডেটা sequentially পড়া হচ্ছে এবং শেষে সেই ডেটা একক আউটপুটে লেখা হচ্ছে।
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
public class SequenceInputStreamExample {
public static void main(String[] args) {
try {
// দুটি ফাইলের ইনপুট স্ট্রিম তৈরি
FileInputStream file1 = new FileInputStream("file1.txt");
FileInputStream file2 = new FileInputStream("file2.txt");
// SequenceInputStream ব্যবহার করে দুইটি ইনপুট স্ট্রিম মার্জ করা
SequenceInputStream sequenceInputStream = new SequenceInputStream(file1, file2);
// আউটপুট ফাইল স্ট্রিম তৈরি
FileOutputStream fos = new FileOutputStream("mergedOutput.txt");
int byteData;
while ((byteData = sequenceInputStream.read()) != -1) {
fos.write(byteData); // merged ডেটা আউটপুটে লেখা
}
// সমস্ত স্ট্রিম বন্ধ করা
sequenceInputStream.close();
fos.close();
System.out.println("Files merged successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileInputStream
দুটি ফাইল থেকে ডেটা পড়তে ব্যবহৃত হচ্ছে: file1.txt
এবং file2.txt
।SequenceInputStream
দুটি ইনপুট স্ট্রিমকে একত্রিত করে। এর মাধ্যমে একটানা দুই ফাইলের ডেটা পড়া হবে।FileOutputStream
আউটপুট ফাইল হিসেবে mergedOutput.txt
ফাইল তৈরি করে, যেখানে একত্রিত ডেটা লেখা হবে।SequenceInputStream
খুবই কার্যকরী।SequenceInputStream
ব্যবহার করা যায়।InputStream
(যা byte stream), সুতরাং Character Streams
এর মতো ফাইলের টেক্সট ডেটার জন্য উপযুক্ত নয়।SequenceInputStream
শুধুমাত্র দুটি ইনপুট স্ট্রিম মার্জ করতে সাহায্য করে। তবে একাধিক স্ট্রিম মার্জ করার জন্য আপনাকে একাধিক SequenceInputStream
বা কাস্টম কোড ব্যবহার করতে হতে পারে।SequenceInputStream
ক্লাসটি একাধিক InputStream
কে মার্জ করার জন্য খুবই কার্যকরী। এটি ডেটা সিকোয়েন্সিয়ালি (ধাপে ধাপে) পড়ে এবং একটি একক স্ট্রিমে রূপান্তরিত করে।Java Tuples ব্যবহার করে আপনি একত্রিত ডেটার বিভিন্ন প্রপার্টি যেমন ফাইলের নাম, আকার, ইত্যাদি সংরক্ষণ করতে পারেন এবং পরে সেই তথ্য ব্যবহার করতে পারেন।
SequenceInputStream
হল Java I/O ক্লাস যা একাধিক ইনপুট স্ট্রিমকে একত্রিত করে একটি সিকোয়েন্স আকারে ডেটা পড়তে ব্যবহৃত হয়। এটি বিভিন্ন ইনপুট স্ট্রিমকে একটি একক স্ট্রিমের মতো পরিচালনা করে এবং প্রথম স্ট্রিম থেকে শেষ হওয়া ডেটা পরবর্তী স্ট্রিমে পাঠাতে থাকে। এটি বিশেষভাবে উপকারী যখন আপনাকে একাধিক ফাইল বা ডেটা স্ট্রিম থেকে ডেটা একসাথে পড়তে হয়।
SequenceInputStream
একাধিক ইনপুট স্ট্রিমকে একটি স্ট্রিমে একত্রিত করে, যা একে একে স্ট্রিমগুলির ডেটা পড়তে সক্ষম। এটি InputStream এর একটি সাবক্লাস এবং সাধারণত FileInputStream, ByteArrayInputStream ইত্যাদি স্ট্রিমের সাথে ব্যবহৃত হয়।
SequenceInputStream
দুটি বা তার অধিক InputStream যুক্ত করতে সক্ষম।
SequenceInputStream(InputStream s1, InputStream s2);
এখানে s1
এবং s2
দুটি ইনপুট স্ট্রিম, যা একে অপরের পর পর পড়া হবে।
ধরা যাক আমাদের দুটি টেক্সট ফাইল রয়েছে (file1.txt
এবং file2.txt
) এবং আমরা তাদের একসাথে একটি ফাইলে পড়তে চাই।
ফাইল ১ (file1.txt):
Hello, this is file 1.
ফাইল ২ (file2.txt):
And this is file 2.
import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
public class SequenceInputStreamExample {
public static void main(String[] args) {
String file1 = "file1.txt";
String file2 = "file2.txt";
try (FileInputStream fileInputStream1 = new FileInputStream(file1);
FileInputStream fileInputStream2 = new FileInputStream(file2);
SequenceInputStream sequenceInputStream = new SequenceInputStream(fileInputStream1, fileInputStream2)) {
int data;
while ((data = sequenceInputStream.read()) != -1) {
System.out.print((char) data); // Print data character by character
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
fileInputStream1
এবং fileInputStream2
) তৈরি করা হয়েছে, যা দুটি ফাইল থেকে ডেটা পড়তে ব্যবহৃত হবে।আউটপুট:
Hello, this is file 1.And this is file 2.
SequenceInputStream
এর মাধ্যমে একাধিক স্ট্রিম একত্রিত করা যায়। নিম্নলিখিত উদাহরণে, আমরা একটি ByteArrayInputStream এবং একটি FileInputStream একত্রিত করে তাদের ডেটা পড়ব।
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
public class MultipleStreamsExample {
public static void main(String[] args) {
String text = "This is data from ByteArrayInputStream.";
String filePath = "file2.txt"; // Assume this file exists
try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(text.getBytes());
FileInputStream fileInputStream = new FileInputStream(filePath);
SequenceInputStream sequenceInputStream = new SequenceInputStream(byteArrayInputStream, fileInputStream)) {
int data;
while ((data = sequenceInputStream.read()) != -1) {
System.out.print((char) data); // Print data from both streams
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
byteArrayInputStream
থেকে প্রথমে ডেটা পড়া হচ্ছে, তারপর fileInputStream
থেকে ডেটা পড়া হচ্ছে।আউটপুট:
This is data from ByteArrayInputStream. (Contents of file2.txt)
Tuples ব্যবহার করে একাধিক ভ্যালু সংরক্ষণ এবং SequenceInputStream এর মাধ্যমে ডেটা পড়া এবং প্রক্রিয়া করা সহজভাবে করা যায়। এটি কার্যকরভাবে ডেটা সংরক্ষণ এবং একাধিক স্ট্রিম একত্রিত করতে সাহায্য করতে পারে।
import org.javatuples.Pair;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
public class TupleWithSequenceInputStreamExample {
public static void main(String[] args) {
// Tuple containing file paths
Pair<String, String> files = Pair.with("file1.txt", "file2.txt");
try (FileInputStream fileInputStream1 = new FileInputStream(files.getValue0());
FileInputStream fileInputStream2 = new FileInputStream(files.getValue1());
SequenceInputStream sequenceInputStream = new SequenceInputStream(fileInputStream1, fileInputStream2)) {
int data;
while ((data = sequenceInputStream.read()) != -1) {
System.out.print((char) data); // Print data from both files
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
SequenceInputStream
ব্যবহার করে দুটি ফাইল থেকে ডেটা একত্রিতভাবে পড়া হচ্ছে।আউটপুট:
Hello, this is file 1.And this is file 2.
SequenceInputStream
হল একটি শক্তিশালী Java ক্লাস যা একাধিক ইনপুট স্ট্রিমকে একত্রিত করে একটি সিকোয়েন্স আকারে ডেটা পড়তে সাহায্য করে। এটি ফাইল থেকে একাধিক ডেটা পড়া, স্ট্রিমের সংমিশ্রণ, এবং কার্যকর ডেটা ম্যানিপুলেশনে সহায়ক। Tuples ব্যবহার করলে ডেটার গঠন আরও সহজ এবং রিডেবল হয়, যা ডেটা প্রসেসিং আরও দক্ষ করে তোলে।
Read more